Everything about Extreme Programming totally explained
Extreme Programming (or
XP) is a
software engineering methodology (and a form of
agile software development)
Proponents of XP and agile methodologies in general regard ongoing changes to
requirements as a natural, inescapable and desirable aspect of software development projects; they believe that adaptability to changing requirements at any point during the project life is a more realistic and better approach than attempting to define all requirements at the beginning of a project and then expending effort to control changes to the requirements.
However, XP has been noted for several potential drawbacks,
Chrysler canceled the C3 project in February 2000, and although some see that initial failure as a problem with XP, the method had caught on in the
software engineering field. As of 2007, a number of software-development projects continue to use Extreme Programming as their method.
Although Extreme Programming itself is relatively new, many of its practices have been around for some time; the methodology, after all, takes "best practices" to extreme levels. For example, the "practice of test-first development, planning and writing tests before each micro-increment" was used as early as NASA's Project Mercury, in the early 1960s .
Refactoring,
modularity,
bottom-up and
incremental design were described by
Leo Brodie in his book published in 1984.
Origins
Most software development in the 1990s was shaped by two major influences: internally,
object-oriented programming replaced
procedural programming as the programming paradigm favored by some in the industry; externally, the rise of the Internet and the
dot-com boom emphasized speed-to-market and company-growth as competitive business factors. Rapidly-changing requirements demanded shorter
product life-cycles, and were often incompatible with traditional methods of software development.
The Chrysler Comprehensive Compensation project was started in order to determine the best way to use object technologies, using the payroll systems at Chrysler as the object of research, with
Smalltalk as the language and
GemStone as the
data access layer. They brought in
Kent Beck,
Scalability: Historically, XP only works on teams of twelve or fewer people. One way to circumvent this limitation is to break up the project into smaller pieces and the team into smaller groups. It has been
claimed that XP has been used successfully on teams of over a hundred developers.
ThoughtWorks has claimed reasonable success on distributed XP projects with up to sixty people.
Controversy in Book: In 2003, Matt Stephens and Doug Rosenberg published a book under Apress called
Extreme Programming Refactored: The Case Against XP which questioned the value of the XP process and suggested ways in which it could be improved. This triggered a lengthy debate in articles, internet newsgroups, and web-site chat areas. The core argument of the book is that XP's practices are interdependent but that few practical organizations are willing/able to adopt all the practices; therefore the entire process fails. The book also makes other criticisms and it draws a likeness of XP's "collective ownership" model to
socialism in a negative manner.
XP Evolution: Certain aspects of XP have changed since the book
Extreme Programming Refactored (2003) was published; in particular, XP now accommodates modifications to the practices as long as the required objectives are still met. XP also uses increasingly generic terms for processes. Some argue that these changes invalidate previous criticisms; others claim that this is simply watering the process down.
In 2004
Industrial Extreme Programming (IXP) was introduced as an evolution of XP. It brings ability to work in big and distributed teams. It now has 23 practices and flexible changeable values. As it's a new member of family, there isn't enough data to prove its usability, however it claims to be an answer to XP's imperfections.
Hybrid/Unified Methodologies: Other authors have tried to reconcile XP with the older methods in order to form a unified methodology. Some of these XP sought to replace, such as the
waterfall method; example:
Project Lifecycles: Waterfall, Rapid Application Development, and All That
.
JPMorgan Chase & Co. tried combining XP with the computer programming methodologies of
Capability Maturity Model Integration (CMMI), and
Six Sigma. They found that the three systems reinforced each other well, leading to better development, and didn't mutually contradict, see
Extreme Programming (XP) Six Sigma CMMI
.
Application of Extreme Programming
Controversial aspects notwithstanding, Extreme Programming remains a viable choice for some projects. Projects suited to Extreme Programming are those that:
Involve new or prototype technology, where the requirements change rapidly, or some development is required to discover unforeseen implementation problems
Are research projects, where the resulting work isn't the software product itself, but domain knowledge
Are small and more easily managed through informal methods
Projects suited for more traditional methodologies are those that:
Involve stable technology and have fixed requirements, where it's known that few changes will occur
Involve mission critical or safety critical systems, where formal methods must be employed for safety or insurance reasons
Are large projects which may overwhelm informal communication mechanisms
Have complex products which continue beyond the project scope to require frequent and significant alterations, where a recorded knowledge base, or documentation set, becomes a fundamental necessity to support the maintenance
Project Managers must weigh project aspects against available methodologies to make an appropriate selection. However, some XP concepts could be applied outside, such as using Pair Programming to expedite related technical changes to the documentation set of a large project.
ThoughtWorks' experiences with implementing XP in large distributed projects can be found at Using an Agile Software Process with Offshore Development
Further Information
Get more info on 'Extreme Programming'.
|
External Link Exchanges
Do you know how hard it is to get a link from a large encyclopaedia? Well we're different and will prove it. To get a link from us just add the following HTML to your site on a relevant page:
<a href="http://extreme_programming.totallyexplained.com">Extreme Programming Totally Explained</a>
Then simply click through this link from your web page. Our crawlers will verify your link, extract the title of your web page and instantly add a link back to it. If you like you can remove the words Totally Explained and embed the link in article text.
As long as your link remains in place, we'll keep our link to you right here. Please play fair - our crawlers are watching. Your site must be closely related to this one's topic. Any kind of spamming, dubious practises or removing the link will result in your link from us being dropped and, potentially, your whole site being banned. |